﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SIGERP_Entidades;
using SIGERP_Negocio;

namespace SIGERP_Presentacion
{
    public partial class frmIntervenirReclamo : Form
    {
        private Reclamo r;
        private DataTable dt;
        private List<Intervencion> intervenciones = new List<Intervencion>();

        public frmIntervenirReclamo(Reclamo reclamo)
        {
            r = reclamo;
            InitializeComponent();
            llenarConDatos();
            mcInteverncion.BoldedDateFontColor = Color.Red;      
            mcInteverncion.SelectedDate=DateTime.Today;
            cargarGrillaYCalendar();
        }

        private void llenarConDatos()
        {
            SubtipoReclamo st=r.subtiporeclamo;
            EstadoReclamo er = r.estadoreclamo;
            Cliente c=r.cliente;
            txtTipoySubtipo.Text = st.tipo.descripcion + " - " + st.descripcion;
            txtEstado.Text = er.descripcion;
            textBox1.Text = r.id.ToString();
            txtCliente.Text = c.tipodocumento + " " + c.numero_documento + " - " + c.apellido + ", " + c.nombre;
            txtReiteraciones.Text = r.cant_reiteraciones.ToString();
            txtDescripcion.Text = r.descripcion;
            txtFechaTentativa.Text = ((DateTime)r.fecha_tentativa).ToLongDateString();
            txtFechaTentativa.Width = Utilities.adjustWidth(txtFechaTentativa);
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void rechazarReclamo(object sender, EventArgs e)
        {
            frmRechazar fr = new frmRechazar(r);
            fr.StartPosition = FormStartPosition.CenterParent;
            fr.ShowDialog();
            if (fr.rechazo) Dispose();
        }

        private void verSeguimiento(object sender, EventArgs e)
        {
            frmSeguimientoDelReclamo fsdr = new frmSeguimientoDelReclamo(r);
            fsdr.StartPosition = FormStartPosition.CenterParent;
            fsdr.ShowDialog();
        }

        private void RecepcionarReclamo(object sender, EventArgs e)
        {
            frmAceptar fa = new frmAceptar(r);
            fa.ShowDialog();
            if(fa.recepcionado)
            {
                Close();
            }
        }

        private void cargarGrillaYCalendar()
        {
            dt = new DataTable();
            dt.Columns.Add("Id",typeof(int));
            dt.Columns.Add("Usuario", typeof(string));
            dt.Columns.Add("Fecha", typeof(DateTime));
            dt.Columns.Add("Descripción", typeof(string));
            dt.Columns.Add("Departamento", typeof(string));

            intervenciones = Intervenciones.DevolverIntervervencionesPorReclamo(r);
            mcInteverncion.Appointments.Clear();
            foreach (Intervencion i in intervenciones)
            {
                dt.Rows.Add(i.id,i.usuario,i.fecha_intervencion,i.descripcion,i.departamento);
                mcInteverncion.Appointments.Add(i.fecha_intervencion,i.fecha_intervencion , i.descripcion);
            }
            grillaIntervenciones.DataSource = dt;
            grillaIntervenciones.Columns["Id"].Visible = false;
            grillaIntervenciones.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
        }

        private void mcInteverncion_SelectedDateChanged(object sender, MPK_Calendar.SelectedDateChangedEventArgs e)
        {
            if(grillaIntervenciones.RowCount>0)
                for (int i = 0; i < grillaIntervenciones.RowCount; i++)
                {
                    grillaIntervenciones.Rows[i].Selected = false;
                    DateTime fecha = (DateTime)grillaIntervenciones.Rows[i].Cells[2].Value;
                    if(fecha.Date==e.SelectedDate.Date)
                        grillaIntervenciones.Rows[i].Selected=true;
                }
        }

        private void NuevaIntervencion(object sender, EventArgs e)
        {
            frmIntervencion fi = new frmIntervencion(r);
            fi.StartPosition = FormStartPosition.CenterParent;
            fi.ShowDialog();
            if(fi.getGuardo())
            cargarGrillaYCalendar();
        }

        private void verIntervencion(object sender, DataGridViewCellEventArgs e)
        {
            if (grillaIntervenciones.SelectedRows.Count == 1 && e.RowIndex != -1)
            {
                foreach (Intervencion i in intervenciones)
                {
                    int idSelected = (int)grillaIntervenciones.SelectedRows[0].Cells[0].Value;
                    if (idSelected == i.id)
                    {
                        frmIntervencion fi = new frmIntervencion(i);
                        fi.StartPosition = FormStartPosition.CenterParent;
                        fi.ShowDialog();
                    }
                }
            }
        }

        private void btnIntervenir_Click(object sender, EventArgs e)
        {
            frmResolucion fr = new frmResolucion(r);
            fr.StartPosition = FormStartPosition.CenterParent;
            fr.ShowDialog();
            if(fr.getGuardo()) Close();
        }

        private void btnDerivar_Click(object sender, EventArgs e)
        {
            frmDerivar fd = new frmDerivar(r);
            fd.StartPosition = FormStartPosition.CenterParent;
            fd.ShowDialog();
            if (fd.derivo) Close();
        }

        private void toolStripAyuda_Click(object sender, EventArgs e)
        {
            Utilities.mostrarAyuda(this, (this.GetType().ToString() + ".htm").Replace("SIGERP_Presentacion.", ""));
        }
    }
}
